package br.com.insight.consultoria.integracao.dao;

import java.util.List;

import org.springframework.dao.DataAccessException;

import br.com.insight.consultoria.entity.InformacoesAcademicas;
import br.com.insight.consultoria.entity.Usuario;
import br.com.insight.consultoria.erro.exception.InsightConstants;
import br.com.insight.consultoria.erro.exception.InsightDaoException;
import br.com.insight.consultoria.erro.exception.InsightException;
import br.com.insight.consultoria.erro.exception.SistemaException;
import br.com.insight.consultoria.integracao.dao.genericdao.GenericDAO;
import br.com.insight.consultoria.integracao.dao.interfacedao.InformacoesAcademicasDAO;

public class InformacoesAcademicasImpDAO extends GenericDAO implements InformacoesAcademicasDAO{

	public void alterar(InformacoesAcademicas informacoesAcademicas) throws InsightException {
		
			try{
		
				saveOrUpdateEntity(informacoesAcademicas);
				
			}catch(DataAccessException sql){
				
				throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
			
			}catch(Exception ex){
				
				throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
				
			}
		
	}

	public void excluir(InformacoesAcademicas informacoesAcademicas) throws InsightException {
		
		try{
			
			
				deleteEntity(informacoesAcademicas);
				
		
			}catch(DataAccessException sql){
				
				throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
			
			}catch(Exception ex){
				
				throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
				
			}
		
	}

	public InformacoesAcademicas getInformacoesAcademicas(Long id) throws InsightException {
		
		InformacoesAcademicas academicas=null;
		
		try{
			
			academicas=(InformacoesAcademicas) getEntityById(InformacoesAcademicas.class, id);
			
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
		
		return academicas;
	}

	public void inserir(InformacoesAcademicas informacoesAcademicas) throws InsightException {
		
		try{
			
			saveOrUpdateEntity(informacoesAcademicas);
		
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
		
	}

	public List<InformacoesAcademicas> pesquisar(Usuario usuario) throws InsightException {
			
		List<InformacoesAcademicas> academicas=null;
		
		try{
		
			academicas=findFiltered(InformacoesAcademicas.class, "usuario", usuario);
			
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
			
		return academicas;
	}

	
	
}
